JSON.stringify([1, [], {}, function() {}, undefined, "42", Symbol('xxx')]); // "[1,[],{},null,null,"42",null]"

// 第二个参数
var a = [1, function() {}, 3];
JSON.stringify(a, function(key, val) {
	if (typeof val == "function") {
		//函数的下oBoolean强制类型转换
		return !!val;
	} else {
		return val;
	}
}); // "[1,true,2,true]"

/**
 * 隐式的强制转化
 * 下面例子虽然看起来是一个显示的，因为涉及到结果是true或者false。但是实际上
 * 涉及了隐式的强制类型转换。因为a要首先被强制类型转换为布尔值才能进行条件判断
 * 结果：
 * 上面的隐式强制类型转换有百害而无一益，应当避免杜绝。
 * 建议使用Boolean(a)和!!a来进行显示的强制类型转换
 */
var a = 42;
var b = a ? true : false;

// 推荐方式
var b = Boolean(a) ? true : false;
var b = !!a ? true : false;